/*
 * InsertosAdminDAO.java
 *
 * Created on 24 de abril de 2007, 03:25 PM
 *
 * To change this template, choose Tools | Options and locate the template under
 * the Source Creation and Management node. Right-click the template and choose
 * Open. You can then make changes to the template in the Source Editor.
 */

package com.src.computec.facturacion.insertosadmin.dao;

import com.src.computec.facturacion.base.constantes.ConstantesGenerales;
import com.src.computec.facturacion.precosto.dto.OrdenProcesoDto;
import com.src.computec.radar.base.dao.exception.DAOException;
import static com.src.computec.facturacion.base.constantes.ConstantesGenerales.SCHEMA;
import com.src.computec.radar.base.dao.GenericDAO;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author jlperea
 */
public class InsertosAdminDAO extends GenericDAO implements BaseInsertosAdminDAO
{
    ConstantesGenerales constantesGenerales = ConstantesGenerales.getInstance(); 
    
    /** Creates a new instance of InsertosAdminDAO */
    public InsertosAdminDAO() {
    }
    
    public List getOrdenesProcesoByFilter(String filter) throws DAOException 
    {
        Connection con = null;
        PreparedStatement statement = null;        
        ResultSet rs = null;
        
        List retornoLst = new ArrayList();
        
        try {
            con = getConnectionDB2();
            
            statement = con.prepareStatement("SELECT OP.NUMERO_ORDEN, OP.CODIGO_CLIENTE, C.RAZON_SOCIAL, OP.CODIGO_PRODUCTO, P.DESCRIPCION_PRODUCTO, OP.CICLO, OP.FECHA_PROCESO, COUNT(I.NUMERO_ORDEN) " +
                    "FROM " + SCHEMA + ".ORDEN_PROCESO OP " +
                    "INNER JOIN " + SCHEMA + ".CLIENTE C ON OP.CODIGO_CLIENTE = C.CODIGO_CLIENTE " +
                    "INNER JOIN " + SCHEMA + ".PRODUCTO P ON OP.CODIGO_PRODUCTO = P.CODIGO_PRODUCTO " +
                    "INNER JOIN PRODRAD.INSERTO I ON OP.NUMERO_ORDEN = I.NUMERO_ORDEN " +
                    "WHERE CAST(OP.NUMERO_ORDEN AS CHAR(20)) LIKE '"+ filter + "%' " +
                    "GROUP BY OP.NUMERO_ORDEN, OP.CODIGO_CLIENTE, C.RAZON_SOCIAL, OP.CODIGO_PRODUCTO, P.DESCRIPCION_PRODUCTO, OP.CICLO, OP.FECHA_PROCESO " +
                    "ORDER BY OP.NUMERO_ORDEN DESC");
                        
            int indice=0;            
            rs = statement.executeQuery();
            
            while(rs.next()) {
                int indice1 = 0;
                
                OrdenProcesoDto ordenProcesoDto = new OrdenProcesoDto();
                ordenProcesoDto.setNumeroOrden(rs.getString(++indice1));
                ordenProcesoDto.setCodigoCliente(rs.getString(++indice1));
                ordenProcesoDto.setRazonSocial(rs.getString(++indice1));
                ordenProcesoDto.setCodigoProducto(rs.getString(++indice1));
                ordenProcesoDto.setDescripcionProducto(rs.getString(++indice1));
                ordenProcesoDto.setCiclo(rs.getString(++indice1));
                ordenProcesoDto.setFechaProceso( ConstantesGenerales.STRING_DATE_FORMAT.format(rs.getDate(++indice1)) );
                ordenProcesoDto.setNumeroInsertos(rs.getInt(++indice1));
                retornoLst.add(ordenProcesoDto);
            }
        } 
        catch (SQLException e) 
        {
            throw new DAOException("InsertosAdminDAO:getOrdenesProcesoByFilter: " +e.toString(), e);
        } 
        finally 
        {
            closeConnection(con, statement,rs);
        }
        return retornoLst;
    }   
    
}
